package com.qualiti.javaweb.mb;

import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Random;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import com.qualiti.javaweb.modelo.Compra;

@ManagedBean
@ViewScoped
public class CompraMB implements Serializable {
	
	@ManagedProperty(value="#{usuarioMB}")
	private UsuarioMB usuarioMB;
	
	@ManagedProperty(value="#{carrinhoMB}")
	private CarrinhoMB carrinhoMB;
	
	public UsuarioMB getUsuarioMB() {
		return usuarioMB;
	}

	public void setUsuarioMB(UsuarioMB usuarioMB) {
		this.usuarioMB = usuarioMB;
	}
	
	public CarrinhoMB getCarrinhoMB() {
		return carrinhoMB;
	}

	public void setCarrinhoMB(CarrinhoMB carrinhoMB) {
		this.carrinhoMB = carrinhoMB;
	}
	
	public String comprar() {
		if (usuarioMB.getUsuarioLogado() == null) {
			usuarioMB.verificarUsuario();
		}
		if (usuarioMB.getUsuarioLogado() == null) {
			FacesMessage usuarioNaoCadastrado = new FacesMessage("usuario_nao_cadastrado");
			FacesContext.getCurrentInstance().addMessage(null, usuarioNaoCadastrado);
			return null;
		}
		if (carrinhoMB.getLivros().isEmpty()) {
			FacesMessage usuarioNaoCadastrado = new FacesMessage("carrinho_vazio");
			FacesContext.getCurrentInstance().addMessage(null, usuarioNaoCadastrado);
			return null;
		}
		Compra compra = new Compra();
		compra.setNumero(new Random().nextLong());
		compra.setData(new Date());
		compra.setUsuario(usuarioMB.getUsuarioLogado());
		compra.setLivros(new HashMap<>(carrinhoMB.getLivros()));
		BancoDeDados.adicionarCompra(compra);
		carrinhoMB.getLivros().clear();
		return "sucesso";
	}
	
	public Long getNumeroUltimaCompra() {
		Compra ultimaCompra = BancoDeDados.obterUltimaCompra(usuarioMB.getUsuarioLogado());
		return ultimaCompra.getNumero();
	}
}